package com.woniuxy.java102vuecli.util;

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.jwt.JWT;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Author author
 * @Create 2023-09-20 15:52
 */
@Component
public class JwtUtil2 {


    @Value("${jwt.key}")
    public   String JWT_KEY;
    public   String JWT_ISSUER="woniuxyzs";
    public  int  JWT_EXPIRE_MILLISECOND=1000*30/**60*30*/;

    //生成token
    public  String createToken(String eid,String ename){
        return JWT
                .create()        //生成token
                .setKey(JWT_KEY.getBytes())   //加密秘钥信息
                .setIssuer(JWT_ISSUER)         //签发人
                .setIssuedAt(DateTime.now())    //指定签发时间
                .setNotBefore(DateTime.now())   //不能早于这个时间
                .setExpiresAt(DateTime.now().offset(DateField.MILLISECOND,JWT_EXPIRE_MILLISECOND))   //指定实现失效
                .setPayload("eid", eid)       //设置载荷：自定义用户信息
                .setPayload("ename", "zs")       //设置载荷：自定义用户信息
                .sign();
    }


    //获取指定payload
    public  String getEid(String token){
        return  JWT.of(token).getPayload("eid").toString();
    }

    public  String getEname(String token){
        return  JWT.of(token).getPayload("ename").toString();
    }

    //验证是否有效
    public  boolean validate(String token){
        return JWT.of(token).setKey("woniuxy".getBytes()).verify();
    }

    //验证是否过期
    public  boolean isExpire(String token){
        return JWT.of(token).setKey("woniuxy".getBytes()).validate(0);
    }

}
